/// API 错误模型
class ApiError {
  final int code;       // HTTP状态码或自定义错误码
  final String message;  // 错误信息
  final dynamic error;   // 原始错误对象（可选）

  ApiError({
    required this.code,
    required this.message,
    this.error,
  });

  /// 从 JSON 创建 ApiError
  factory ApiError.fromJson(Map<String, dynamic> json) {
    return ApiError(
      code: json['code'] as int? ?? -1,
      message: json['message'] as String? ?? 'Unknown API error',
      error: json['error'], // 可选的详细错误信息
    );
  }

  /// 从 DioError 或其他异常创建 ApiError
  factory ApiError.fromException(dynamic exception) {
    if (exception is ApiError) {
      return exception;
    }
    // 在实际应用中，这里可以根据不同的异常类型（如DioError、SocketException等）
    // 提取更具体的错误码和信息
    return ApiError(
      code: -1, // 未知错误码
      message: exception.toString(),
      error: exception,
    );
  }

  @override
  String toString() {
    return 'ApiError(code: $code, message: $message, error: $error)';
  }
} 